package leetcode3;

public class Day5 {

    //移除元素
    public int removeElement(int[] nums, int val) {
        int left=0,n=nums.length;
        for(int i=0;i<n;i++) {
            if(nums[i]!=val) {
                nums[left++]=nums[i];
            }
        }
        return left;
    }




    //除自身以外数组的乘积
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] dp1 = new int[n]; //[0,i]所有元素之积
        int[] dp2 = new int[n]; //[i,n-1]所有元素之积
        //                        answer[i] = dp1[i-1] * dp2[i+1]
        dp1[0] = nums[0];dp2[n-1] = nums[n-1];
        for(int i=1;i<n;i++) {
            dp1[i] = nums[i] * dp1[i-1];
        }
        for(int i=n-2;i>=0;i--) {
            dp2[i] = nums[i] * dp2[i+1];
        }
        int[] answer = new int[n];
        answer[0] = dp2[1];
        answer[n-1] = dp1[n-2];
        for(int i=1;i<n-1;i++) {
            answer[i] = dp1[i-1] * dp2[i+1];
        }
        return answer;
    }
}
